吴宏东 - 记于2018年06月13日 - 博客 https://segmentfault.com/u/wu...
Linux 权限管理
文件属性
属性命令 ls -l
drwxr-xr-x. 2 root root 15 6月 13 16:23 wuhd
-rwsr-xr--+ 1 root root 27832 6月 10 2014 /usr/bin/passwd
lrwxrwxrwx. 1 root root 8 5月 20 00:29 sbin -> usr/sbin
brw-rw----. 1 root disk 8, 0 6月 13 06:54 sda
crw-rw-rw-. 1 root root 1, 5 6月 13 06:54 zero
说明:
第1列第1个字符分别有b、c、d、-、l,分别代表
[b] 表示装置文件里面的可供储存的接口设备;
[c] 表示装置文件里面的串行端口设备;
[d] 表示目录;
[-] 表示文件;
[l] 表示链接文件;
第2-4列三个位表示属主权限标记;
第5-7列三个位表示组权限标记;
第8-10列三个位表示其他用户权限标记;
第11列表示特殊权限位,+表示存在ACL权限;
[r] 表示读,用数字4标记;
[w] 表示写,包括创建、删除,用数字2标记;
[x] 表示执行,用数字1标记;
更改操作权限
文字设定法 chmod
格式:chmod ugoa[rwx] <文件名或目录名>
[u] 属主(user)
[g] 属组用户(group)
[o] 其他用户(other)
[a] 所有用户(all)
[+] 添加权限
[-] 删除权限
[=] 替换原有权限
[r] 允许读取
[w] 允许写入、创建、删除
[x] 允许执行
# 对属主用户添加执行权限,对其他用户删除读取权限,针对文件text.txt
chmod u+x,o-r text.txt
# 分配权限=的写法
chmod u=rwx,g=rw,o=rx text.txt
数字设定法 chmod
格式:chmod n1n2n3 <文件名或目录名>
n1 属主权限
n2 组用户权限
n3 其他用户权限
数字分别按r=4、w=2、x=1进行相加组合而成。
# 对文件text.txt赋予最高权限
chmod 777 text.txt;
更改属主和组
命令 chown
格式:chown [-R] <用户[:组]> <文件名或目录名>
# 将www目录的属主和组由root:root改为wuhd:wuhd
chown wuhd:wuhd www;
# 加-R表示将www目录及其子目录下的所有文件的属主和组都修改为wuhd:wuhd
chown -R wuhd:wuhd www;
设置权限掩码
命令 umask
权限掩码是告诉系统当创建文件或目录时不应该赋予的权限。
格式:umask [-S] [u0u1u2u3]
[u0] 表示特使权限,0为不设置,4为SUID权限,2为SGID权限,1为sticky-bit权限
[u1] 不允许属主有的权限,0为拥有全部权限
[u2] 不允许同组人有的权限,0为拥有全部权限
[u3] 不允许其他人有的权限,0为拥有全部权限
# 查看当前的权限掩码,root用户输出0022,普通用户输出0002
umask;
# 权限掩码的文字表达,表示实际赋予的权限,输出u=rwx,g=rx,o=rx
umask -S;
# 将普通用户的掩码设置成root用户的权限掩码
umask 0022;
设置特殊权限
文字设定法 chmod
# 为文件 /usr/bin/passwd 添加SUID权限
chmod u+s /usr/bin/passwd;
# 为文件 /usr/bin/passwd 添加SGID权限
chmod g+s /usr/bin/passwd;
# 为文件 /usr/bin/passwd 添加sticky-bit权限
chmod o+t /usr/bin/passwd;
设置ACL权限
命令 setfacl
格式:setfacl [-R] {-m|-x} <u:用户名:{r|w|x}> <文件名或目录名>
[-R] 递归目录
[-m] 修改ACL权限
[-x] 删除ACL权限
[root@master ~]# ll /usr/bin/passwd
-rwsr-xr--+ 1 root root 27832 6月 10 2014 /usr/bin/passwd
# 第11位为+号表示已设置ACL权限
# 设置所有普通用户不能修改密码
chmod o-x /usr/bin/passwd;
# 单独给普通用户wuhd赋予修改密码的权限
setfacl -m u:wuhd:x /usr/bin/passwd;
# 删除文件 /usr/bin/passwd 所有ACL权限
setfacl -b /usr/bin/passwd;
# 单独删除某个用户的ACL权限
setfacl -x u:wuhd /usr/bin/passwd;
命令 getfacl
# 查看ACL权限
getfacl /usr/bin/passwd;
输出:
# file: usr/bin/passwd
# owner: root
# group: root
# flags: s--
user::rwx
user:wuhd:--x
group::r-x
mask::r-x
other::r--
设置文件属性
安装 e2fsprogs
# 安装
yum install -y e2fsprogs;
命令 lsattr
# 查看文件的属性
lsattr fluent.conf;
命令 chattr
a:让文件或目录仅供附加用途;
i:不得任意更动文件或目录;
[-R]:递归处理,将指令目录下的所有文件及子目录一并处理;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性;
# 设置任何用户(包括root用户)只读且不可删除
chattr +i fluent.conf;
# 取消任何用户(包括root用户)只读且不可删除
chattr -i fluent.conf;
# 设置任何用户(包括root用户)只能追加内容且不可删除
chattr +a fluent.conf;
# 取消任何用户(包括root用户)只能追加内容且不可删除
chattr -a fluent.conf;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。